Overview
The Intel 286 is an evolution of the Intel 8086/8088. It adds some additional instructions as well as memory modes.
This page is about the 286 as it is the last of the 16-bit Intel processors but most of it should be applicable to earlier processors. I will note when things are only relevant to later processors.
CPU Registers
| 15 8 | 7 0 |
| AX | AH | AL |
| DX | DH | DL |
| CD | CD | CL |
| BX | BH | BL |
| | BP |
| | SI |
| | DI |
| | SP |
| | CS |
| | DS |
| | SS |
| | ES |
| | F |
| | IP |
| | MSW |
The 286 has 4 16-bit general purpose registers that can also be addressed as two 8-bit registers. These registers also have special uses within the instruction set. AX and DX are used for Multiply and Divide instructions along with I/O instructions, CX is used for counting loops, BX is used as a base register
There are also 11 other 16-bit special purpose registers. BP is another base register, SI and DI are index registers (source and destination respectively), SP is the stack pointer, CS, DS, SS and ES are segment selectors, F is the flags register, IP is the instruction pointer and MSW is the machine status word.
Memory Segmentation
The 286 has 24 address lines but only 16-bit registers which by themselves can only refer to 64 KiB. To work around this issue, the 286 uses memory segmentation where the address space is broken up into multiple 64 KiB segments. The segment selector determines which segment is being addressed and then the offset determines which byte in that segment.
In Real Mode the processor works the same as the earlier 8086 and 8088 where the selector is shifted left 4 bits to form a 20-bit base address that the offset gets added to. This model leads to overlapping segments as adding 1 to the segment selector is the same as adding 16 to the offset.
The segment selectors are CS, DS, SS, and ES which are used for the Code, Data, Stack and Extra segments respectively.